package com.example.demo.domain.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.example.demo.domain.base.BaseDO;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.util.Date;

/**
 * OrderMainDO
 *
 * @author Qwen
 * @date 2025/11/22 12:30
 **/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("order_main")
public class OrderMainDO extends BaseDO {

    /**
     * 主订单编号（全局唯一，格式：yyyyMMddHHmmss + 6位序列）
     */
    private String mainOrderNo;

    /**
     * 下单用户ID
     */
    private Long userId;

    /**
     * 所有子订单实付总金额
     */
    private BigDecimal totalActualAmount;

    /**
     * 商品总件数（所有子订单汇总）
     */
    private Integer totalQuantity;

    /**
     * 收货人姓名
     */
    private String consignee;

    /**
     * 收货人手机号
     */
    private String phone;

    /**
     * 详细收货地址
     */
    private String addressDetail;

    /**
     * 省份
     */
    private String province;

    /**
     * 城市
     */
    private String city;

    /**
     * 区/县
     */
    private String district;

    /**
     * 邮政编码
     */
    private String postalCode;

    /**
     * 用户下单备注（对所有子订单生效）
     */
    private String remark;

    /**
     * 是否需要发票：0-不需要，1-需要
     */
    private Integer invoiceNeeded;

    /**
     * 发票抬头
     */
    private String invoiceTitle;

    /**
     * 纳税人识别号
     */
    private String invoiceTaxNo;

    /**
     * 创建来源：1-购物车结算，0-立即购买
     */
    private Integer createdFromCart;

    /**
     * 主订单状态：0-待支付，1-待发货，2-部分发货，3-全部发货，4-已完成，5-已取消，6-部分退款，7-全部退款
     */
    private Integer status;

    /**
     * 状态描述
     */
    private String statusDesc;

    /**
     * 支付方式
     */
    private String paymentMethod;

    /**
     * 支付时间
     */
    private Date paymentTime;

    /**
     * 第三方支付流水号（如支付宝/微信交易号）
     */
    private Integer tradeNo;

    /**
     * 支付状态：0-未支付，1-支付成功，2-支付失败，3-已关闭
     */
    private Integer payStatus;
}